﻿Imports Microsoft.VisualBasic.ApplicationServices
Imports SFDL.Core
Imports SFDL.Logging

Namespace My

    ' Für MyApplication sind folgende Ereignisse verfügbar:
    '
    ' Startup: Wird beim Starten der Anwendung noch vor dem Erstellen des Startformulars ausgelöst.
    ' Shutdown: Wird nach dem Schließen aller Anwendungsformulare ausgelöst. Dieses Ereignis wird nicht ausgelöst, wenn die Anwendung nicht normal beendet wird.
    ' UnhandledException: Wird ausgelöst, wenn in der Anwendung eine unbehandelte Ausnahme auftritt.
    ' StartupNextInstance: Wird beim Starten einer Einzelinstanzanwendung ausgelöst, wenn diese bereits aktiv ist.
    ' NetworkAvailabilityChanged: Wird beim Herstellen oder Trennen der Netzwerkverbindung ausgelöst.
    Partial Friend Class MyApplication

        Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup

            Dim _loghelper As New LogHelper
            Dim _filelog_enabled As Boolean = False

            For Each _param In e.CommandLine

                If _param.ToLower.Equals("/log") Then
                    _filelog_enabled = True
                End If

            Next

            If _filelog_enabled = True Then
                _loghelper.GenerateNLogConfig("loader.log")
            Else
                _loghelper.GenerateNLogConfig()
            End If

            'Einstellungen Laden
            LoadSettings()

        End Sub

        Private Sub MyApplication_StartupNextInstance(sender As Object, e As StartupNextInstanceEventArgs) Handles Me.StartupNextInstance

            Dim _list_files2open As New List(Of String)
            Dim _log As NLog.Logger = NLog.LogManager.GetLogger("StartupNextInstance")

            Try

                For Each _file In e.CommandLine

                    Try

                        If _file.StartsWith("sfdl://") Then

                            _file = ProgressClicknLoadPlugins(_file)

                            If String.IsNullOrEmpty(_file) Then
                                Throw New PluginNotFoundException
                            End If

                            If IO.File.Exists(_file) Then
                                _list_files2open.Add(_file)
                            End If

                        Else
                            If IO.File.Exists(_file) Then
                                _list_files2open.Add(_file)
                            End If
                        End If

                    Catch ex As PluginNotFoundException
                        _log.Warn("Kein passendes ClicknLoad Plugin gefunden!")

                    Catch ex As Exception
                        _log.Error(ex, "Konnte Startparameter nicht verarbeiten! - " & ex.Message)
                        MessageBox.Show("Fehler" & vbNewLine & "Fehlermeldung: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End Try

                Next

                frm_main.OpenSFDLHelper(_list_files2open.ToArray)

            Catch ex As Exception
                _log.Error(ex, ex.Message)
                MessageBox.Show("Fehler" & vbNewLine & "Fehlermeldung: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try

        End Sub

    End Class

End Namespace